From 8e7d2037c7a6e9b4e085a5946651c5b3d1daadac Mon Sep 17 00:00:00 2001 From: "kaf24@firebug.cl.cam.ac.uk" Date: Wed, 24 Aug 2005 15:46:33 +0000 Subject: [PATCH] Always free the lowest 1MB of pseudo-physical memory when booting a guest. Signed-off-by: Keir Fraser --- .../arch/xen/x86_64/kernel/setup.c | 5 +++-- .../asm-xen/asm-i386/mach-xen/setup_arch_post.h | 17 +++-------------- 2 files changed, 6 insertions(+), 16 deletions(-) diff --git a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/setup.c b/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/setup.c index cd87c77b65..b7f5de7cbe 100644 --- a/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/setup.c +++ b/linux-2.6-xen-sparse/arch/xen/x86_64/kernel/setup.c @@ -428,8 +428,9 @@ static void __init contig_initmem_init(void) { unsigned long bootmap_size = init_bootmem(start_pfn, end_pfn); free_bootmem(0, end_pfn << PAGE_SHIFT); - /* XXX KAF: Why can't we leave low 1MB of memory free? */ - reserve_bootmem(0, (PFN_PHYS(start_pfn) + bootmap_size + PAGE_SIZE-1)); + reserve_bootmem(HIGH_MEMORY, + (PFN_PHYS(start_pfn) + bootmap_size + PAGE_SIZE-1) + - HIGH_MEMORY); } #else static void __init contig_initmem_init(void) diff --git a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h b/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h index 78886d339c..92d41bbf79 100644 --- a/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h +++ b/linux-2.6-xen-sparse/include/asm-xen/asm-i386/mach-xen/setup_arch_post.h @@ -8,23 +8,12 @@ static char * __init machine_specific_memory_setup(void) { - char *who; - unsigned long start_pfn, max_pfn; - - who = "Xen"; - - /* In dom0, we have to start the fake e820 map above the first - * 1MB, in other domains, it can start at 0. */ - if (xen_start_info.flags & SIF_INITDOMAIN) - start_pfn = 0x100; - else - start_pfn = 0; - max_pfn = xen_start_info.nr_pages; + unsigned long max_pfn = xen_start_info.nr_pages; e820.nr_map = 0; - add_memory_region(PFN_PHYS(start_pfn), PFN_PHYS(max_pfn) - PFN_PHYS(start_pfn), E820_RAM); + add_memory_region(0, PFN_PHYS(max_pfn), E820_RAM); - return who; + return "Xen"; } void __init machine_specific_modify_cpu_capabilities(struct cpuinfo_x86 *c) -- 2.30.2